home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SGI Hot Mix 17
/
Hot Mix 17.iso
/
HM17_SGI
/
research
/
lib
/
chebyshev.pro
< prev
next >
Wrap
Text File
|
1997-07-08
|
2KB
|
87 lines
; $Id: chebyshev.pro,v 1.3 1997/01/15 03:11:50 ali Exp $
;
; Copyright (c) 1986-1997, Research Systems, Inc. All rights reserved.
; Unauthorized reproduction prohibited.
;
FUNCTION CHEBYSHEV,D,N
;+
; NAME:
; CHEBYSHEV
;
; PURPOSE:
; Implements forward and reverse Chebyshev polynomial expansion of
; a set of data.
;
; CATAGORY:
; Mathematics.
;
; CALLING SEQUENCE:
; Result = CHEBYSHEV(D, N)
;
; INPUT:
; D: A vector containing the values at the zeros of Chebyshev
; polynomial.
;
; N: A flag that, if set to -1, returns a set of Chebyshev polynomials.
; If set to +1, the original data is returned.
;
; OUTPUT:
; Returns either the set of Chebyshev polynomials or the original
; data depending on the value of N.
;
; COMMON BLOCKS:
; None.
;
; SIDE EFFECTS:
; Results from this function are subject to roundoff error given
; discontinuous data.
;
; RESTRICTIONS:
; Unknown.
;
; PROCEDURE:
; Straightforward implementation of recursion formula.
;
; REVISION HISTORY:
; Jan, 1986 Written by Leonard Kramer, U. of Maryland
; University Research Foundation
;-
ON_ERROR,2 ;Return to caller if an error occurs
IF (N_PARAMS(0) NE 2 ) THEN BEGIN
PRINT,'two parameters required'
STOP
ENDIF
UNITY =(ABS(D[0])+1.)/(ABS(D[0])+1.)
NL=N_ELEMENTS(D)
NE2=(NL-1.)/2.
C=TRANSPOSE([TRANSPOSE(D),TRANSPOSE(D)])
C[*,0]=1.
X = cos(!Pi * (findgen(NL) + .5)/Nl)
C[0,1]=X
T=D
CASE N OF
-1: BEGIN
FOR I = 0, 1 DO T[I] = 2 * TOTAL(D * C[*,I])/NL
FOR I=2,NL-1 DO BEGIN
SAVE=C[*,1]
C[0,1]= 2.*X*C[*,1]-C[*,0]
C[0,0]=SAVE
T[I] = 2 * TOTAL( D * C[*, 1])/NL
ENDFOR
END
1: BEGIN
T = fltarr(NL) - .5 * D[0]
FOR I=0,1 DO T = T + D[I] * C[*,I]
FOR I=2,NL-1 DO BEGIN
SAVE=C[*,1]
C[0,1]= 2.*X*C[*,1]-C[*,0]
C[0,0]=SAVE
T=T+D[I]*C[*,1]
ENDFOR
END
ELSE:
ENDCASE
RETURN,T
END